0. Задача

Основываясь на имеющихся данных о измерениях погодных условий предсказать будет ли завтра дождь (да или нет)

Homework 1

1. Чтение данных

Датасет представляет из себя собранные в Австралии наблюдения за погодными условиями с 2008 по 2017 год

Признаки (Н - номинальный, П - порядковый, К - количественный)

2. Визуализация

Согласно построенным графикам распределения, делая поправку на несбалансированность классов, можно сказать, что на таргетную переменную определенно влияют признаки Rainfall, Sunshine, WindGustSpeed, Humidity, Cloud

В силу длительности вычислений вместо целого датасета был использован его семпл в 1000 объектов. Из диаграмм рассеивания можно сделать вывод, что признак RISK_MM оказывает сильное влияние на определение таргетной переменной

По корреляционной матрице можно сказать, что на таргетную переменную также влияют признаки Pressure и RainToday

Вывод

На таргетную переменную оказывают достаточное влияние признаки Rainfall, Sunshine, WindGustSpeed, Humidity, Cloud, RISK_MM, Pressure и RainToday
11 признаков из 23

3. Пропущенные значения

Удалим объекты, в признаках которых имеется меньше 5 % пропущенных значений

Построим график плотности пропущенных значений на датасете

Отобразим график, отсортированный по признаку с наибольшим количеством пропущенных значений (Sunshine)

Из построенного графика можно отметить, что Sunshine и Evaporation тесно связаны друг с другом (прослеживается зависимость в пропущенных значениях). Также прослеживается зависимость между WindGustDir, WindGustSpeed и Pressure9am, Pressure3pm

В признаках Cloud9am и Cloud3pm, также прослеживается зависимость между собой и с признаками Evaporation и Sunshine

Для подтверждения вышесказанного, построим heatmap зависимостей пропущенных величин

А также дендрограмму для более подробного группового анализа зависимостей

Исходя из построенных графиков, можно сделать вывод, что большинство пропущенных значений отсутствуют в связи с MNAR - missing not at random (отсутствующие данные зависят от ненаблюдаемых данных или значений самих отсутствующих данных)

Так как в данном случае пропущенные значения относятся к типу MNAR, а данные являются временными рядами (обозревание погодных условий в течение нескольких лет в Австралии с наличием дат выполненных измерений), то обработка пропущенных значений будет выполнена после пункта конвертации категориальных переменных (в силу наличия необходимости их перевода в цифровые для работы алгоритма KNN imputer). Заполнение пропущенных значений для категориальных признаков будет выполнено в текущем пункте

Заполним наиболее популярным значением (модой) пропущенные значения в категориальных признаках

4. Категориальные признаки

Конвертируем дату в дни, месяцы, года, с цикличным отображением первых двух

Так как данные признаки содержат номинальные (непорядковые) значения, то используем OneHotEncoding

3. Пропущенные значения

В силу долгих вычислений датасет будет семплирован на 20

Применим алгоритм knn imputer

5. Нормализация

Применим стандартизацию

6. Разбивка данных на выборки

7. Ближайшие соседи

8. Ошибки на выборках

Вывод

Модель показала себя достойно с 19 % ошибкой в лучшем случае. В initial версии показала показала себя лучше в плане точности предсказания (13 % ошибки). Возможно на результат повлиял отбор 20% от имеющегося датасета для более быстрых вычислений

Вывод fixed

После исправления сплита данных (young, old data) ошибка модели в лучшем случае снизилась на 2 % до 17 %

9. Другие классификаторы

Линейный классификатор

Случайный лес

Вывод

Исходя из результатов тестирования, можно сделать вывод, что на данном датасете и при данной выборке Random Forest показывает себя лучше остальных классификаторов. На точность Random Forest возможно повлияла незначительная величина выборки

10. Несбалансированные классы

11. Корреляция

12. Вывод

Была проведена классификация датасета с метеорологическими данными Австралии с целью предсказывания статуса дождя на следующий день. В экспларационном анализе были выявлены переменные наиболее коррелирующие с таргетной, после чего было выполнено заполнение пропущенных значений, определение их типа а также конвертация категористических признаков в числовые. В заключительной части была выполнена классификация при помощи модели ближайших соседей и нескольких других классификаторов. KNN модель из данной работы показала себя хуже чем KNN модель из initial коммита с разницой в ошибке 6 % (19 % и 13 % соответственно). На данном датасете при данной выборке лучше всего продемонстрировала себя модель Random Forest с 100 % точностью

Вывод fixed

После исправления сплита разница в ошибках составила 4 % (17 % и 13 %)

Homework 1 FIX

Timeseries data wrong train_test split (shuffling old with young data)

Как видно из графика, в датафрейме перемешаны даты, что может привести к последующим ошибкам при тренировке модели

Отсортировали датафрейм по датам

Разбивка на тренировочную, тестовую через классический sklearn, но без перемешивания

Разбивка на тренировочную, тестовую при помощи специальной функции (функция направлена на работу с подобными датасетами)

Вывод

Исходя из графиков, можно сделать вывод, что датафрейм был разбит на тренировочную и тестовую выборки (в 2 методах) относительно таймфрейма успешно

Homework 2

Возьмем уже имеющееся разделение на трейн / тест датасеты из прошлого дз

Количество регуляризационных параметров и вариантов слоев нейронной сети было подобрано относительно времени тренировки сети (с целью его экономии)

Посмотрим на зависимость ошибки от параметра регуляризации для однослойной и двухслойной сети. Ошибки были усреднены по количеству вариаций слоев для каждого параметра альфа

Также посмотрим на зависимость относительно фиксированной нейронной сети

Из графика видно, что после достижения оптимального значения alpha, модель начинает недообучаться вследствие завышенного значения параметра регуляризации

По аналогии с параметром alpha, были усреднены значения ошибок нейронных сетей относительно вариации количества нейронов в слоях. При сравнении в 2-ух слоевой нейронной сети нейроны будут употреблены в единственном значении (без акцента на последовательность слоя), т.е слои (100, 50) будут иметь значение 150 на графике

Также посмотрим на зависимость относительно фиксированного альфа

Из графиков средних значений и фиксированного alpha заметно, что они достаточно сильно противоречат друг другу на однослойной нейронной сети и похожи на двуслойной. На среднем значении наблюдается достижение оптимального значения ошибки на минимальном количестве используемых нейронов. В фиксированном же ситуация полностью противоположна. Скорее всего данная ситуация вызвана недостаточным значением параметра регуляризации alpha фиксированной нейронной сети (модель переобучается). Увелечение нейронов также в краткосрочной перспективе в среднем дает переобучение. Достижение более оптимального значения при большем количестве нейронов возможно при достижении достаточного времени (при больших данных данное времи возможно сильно скалируется в сравнении с малым числом нейронов)

Для данного датасета и выбранных гиперпараметров оптимальное значение достигается при 35 и 75 нейронах. Скорее всего на данный результат повлияла комбинация из правильно подобранной регуляризации alpha и достаточного количества нейронов (чтобы компенсировать переобучение модели на большем количестве нейронов засчет параметра регуляризации)